package com.example.jmeter.dependent;

import com.example.jmeter.util.FileUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * @program: 依赖安装
 * @description:
 * @author: zt22328
 * @create: 2023-04-18 14:34
 **/
public interface DependInstall {

    /**
     * 类型
     * @return
     */
    String type();

    /**
     * 版本
     * @return
     */
    String version();

    /**
     * 安装包下载地址
     * @return
     */
    String getDownloadUrl();

    /**
     * 后缀
     * @return
     */
    default String downloadSuffix() {
        String downloadUrl = this.getDownloadUrl();
        if (!StringUtils.hasText(downloadUrl)) {
            return null;
        }
        return FileUtil.suffix(downloadUrl);
    }

    /**
     * 是否已经安装
     * @return
     */
    boolean installed();

    /**
     * 安装
     */
    void install();

    /**
     * 命令执行
     * @return
     */
    List<String> execute(String cmd, String ... endpoints);

    /**
     * 卸载
     */
    default void uninstall() {
        throw new UnsupportedOperationException();
    }

}
